We may ask why not use a simple "Stack" for tracking browser history or undo-redo, and other similar problems?
The reason is we want to "work" both ends. One end for adding and removing, and the other end for trimming/pruning (removing) when list becomes oversized.
We may have problems where we have something similar to a queue, but with variations.
For example, say we have a line of persons at the airport, movie theatre, etc. The line is queue-like, but a person with special needs or privileges might be allowed to enter the front of the line.
We use a deque for this because it models a queue just fine, but also allows efficient access on both ends, when needed.
We define the default traversal for a deque to be from first to last (or front to rear). Although we could also easily iterate in the reverse direction.
By default, we would visit the example in this order: